home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr49 / 274_01.zip / A_INFO.H < prev    next >
Text File  |  1993-04-01  |  2KB  |  89 lines

  1. /* Array Handling Package
  2. (C) Copyright 1985,1987,1988 James P. Cruse - All Rights Reserved
  3.  
  4. a_info.h  
  5.  
  6. A Part of the User-Supported Array Handling package. Please see
  7. the file ARRAY.h for discussion concerning the registration and 
  8. usage of the package.
  9.  
  10. declares all info operations:
  11.  
  12. Notation:
  13.     d    =>    destination parameter d
  14.     a[+]    =>    all elements of a[] are [+]
  15.     d[]    =>    all elements of d (from 0 to n-1)
  16.     d[i]    =>    the i'th element of d (from 0 to n-1)
  17.     d[i-1]    =>    the i-1'th element of d (from 1 to n-1)
  18.     s    =>    parameter s
  19.     f()    =>    function parameter f (i.e. cos)
  20.     T    =>    function type T (i.e. float)
  21.  
  22. The functions are: 
  23.     a_sum(n,d,a)    d = a[+]        sum of array
  24.     a_prod(n,d,a)    d = a[*]        product of array
  25.     a_max(n,d,a)    d = max(a[])        max value in array
  26.     a_min(n,d,a)    d = min(a[])        min value in array
  27.     a_minmax(n,l,u,a)            min and max of array
  28.             l = min(a[]), u = max(a[])
  29.  
  30. */    
  31.  
  32. /* check to make sure array.h has been included */
  33. #ifndef    ARR_IF_NEEDED
  34. #include "array.h"
  35. #endif
  36.  
  37.  
  38. /* check to see if we have been loaded */
  39. #ifndef    ARR_INFO_LOADED
  40. #define    ARR_INFO_LOADED    1
  41.  
  42. /* sum */
  43. #define    a_sum(N,D,A)    ARR_IF1 { \
  44.     ARR_TYPE_IND ARR_IND = (N); \
  45.     (D) = (A)[--ARR_IND]; \
  46.     while ( ARR_IND-- ) \
  47.         (D) += (A)[ARR_IND]; \
  48.     } ARR_IF2
  49.  
  50. /* product */
  51. #define    a_prod(N,D,A)    ARR_IF1 { \
  52.     ARR_TYPE_IND ARR_IND = (N); \
  53.     (D) = (A)[--ARR_IND]; \
  54.     while ( ARR_IND-- ) \
  55.         (D) *= (A)[ARR_IND]; \
  56.     } ARR_IF2
  57.  
  58. /* min */
  59. #define    a_min(N,D,A)    ARR_IF1 { \
  60.     ARR_TYPE_IND ARR_IND = (N); \
  61.     (D) = (A)[--ARR_IND]; \
  62.     while ( ARR_IND-- ) \
  63.         if ( (D) > (A)[ARR_IND] ) \
  64.             (D) = (A)[ARR_IND]; \
  65.     } ARR_IF2
  66.  
  67. /* max */
  68. #define    a_max(N,D,A)    ARR_IF1 { \
  69.     ARR_TYPE_IND ARR_IND = (N); \
  70.     (D) = (A)[--ARR_IND]; \
  71.     while ( ARR_IND-- ) \
  72.         if ( (D) < (A)[ARR_IND] ) \
  73.             (D) = (A)[ARR_IND]; \
  74.     } ARR_IF2
  75.  
  76. /* minmax */
  77. #define    a_minmax(N,L,U,A)    ARR_IF1 { \
  78.     ARR_TYPE_IND ARR_IND = (N); \
  79.     (L) = (U) = (A)[--ARR_IND]; \
  80.     while ( ARR_IND-- ) \
  81.         if ( (L) > (A)[ARR_IND] ) \
  82.             (L) = (A)[ARR_IND]; \
  83.         else if ( (U) < (A)[ARR_IND] ) \
  84.             (U) = (A)[ARR_IND]; \
  85.     } ARR_IF2
  86.  
  87.  
  88. #endif    /* ARR_INFO_LOADED */
  89.